package SpringDemo.IOC.com.junjie.framework.beans.factory.support;

import SpringDemo.IOC.com.junjie.framework.beans.BeanDefinition;

/**
 * Bean定义注册器接口
 */
public interface BeanDefinitionRegistry {

    /**
     * 注册BeanDefinition对象到注册表中
     * @param beanDefinition
     */
    void registry(String beanDefinitionName, BeanDefinition beanDefinition);

    /**
     * 根据指定名删除BeanDefinition对象
     * @param beanDefinitionName
     */
    void removeBeanDefinition(String beanDefinitionName) throws Exception;

    /**
     * 根据指定名称获取BeanDefinition对象
     * @param beanDefinitionName
     * @return
     */
    BeanDefinition getBeanDefinition(String beanDefinitionName) throws Exception;

    /**
     * 判断是否包含指定名称的BeanDefinition对象
     * @param beanDefinitionName
     * @return
     */
    boolean containsBeanDefinition(String beanDefinitionName);

     /**
      * 获取所有注册的BeanDefinition对象名称
      * @return
      */
    String[] getBeanDefinitionNames();

    /**
     * 获取注册的BeanDefinition对象数量
     * @return
     */
    int getBeanDefinitionCount();
}
